﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Facade
{
    class Adapter
    {
        /*
         * Adapter 适配器模式
         *    根据生活中距离：
         *    电脑电源的官方   =》电源适配器
         *    水管大口径转小口径=》水管接口适配器
         *    笔记本只有HDMI，显示器只有VGA，=》视频接口适配器
         *
         *
         *   顾名思义  就是提供一个转换的接口，让两个不兼容的东西，通过这个接口，能够兼容
         * 定义:将一个类的接口转换成客户希望的另一个接口，Adapter模式使用原本不兼容不能一起工作的那些类能够一起工作。
         *
         * 主要应用于 服用一些现存的类，但接口又和服用环境要求不一致的情况。在遗留代码复用、类库迁移方面用的比较多。
         *
         *
         * Adapter分为两种：1，类适配器；2，对象适配器。类适配器主要通过采用继承的方案；对象适配器采用组合的方式；
         * 推荐对象适配器，松耦合
         *
         *
         *
         * 也是加一个中间层，包一层思想
         */

        private NewSys Sys { get; set; }

        public void MethodA()
        {
            Sys.MethodMM();
        }

        public void MethodB()
        {
            Sys.MethodNN();
        }

    }

    class OldSys
    {
        public void MethodA()
        {

        }

        public void MethodB()
        {

        }
    }

    class NewSys
    {
        public void MethodMM()
        {
        }

        public void MethodNN()
        {

        }
    }
}
